<!DOCTYPE html>
<html lang="zh-CN">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>面向对象继承</title>
</head>
<body>
    <script>
        function Person(name, age){
            this.name = name;
            this.age = age;
        }

        Person.prototype.say = function(){
            console.log(`我叫${this.name}, 今年${this.age}岁`);
        }

        function Student(name, age, score){
            //当普通方法调用  这样Person()的this指向调用它的对象 属于构造函数继承  只能继承属性 不能继承方法
            Person.call(this, name, age); // 继承属性
            this.score = score;
        }
        //Student.prototype = Person.prototype; // 这种写法会导致Student的实例对象和Person的实例对象共享同一个原型对象
        Student.prototype = new Person(); // 继承方法 不好的地方是原型里面有属性  Student的实例对象和Person的实例对象共享同一个原型对象
        var student = new Student("小明", 18, 90);
        console.log(student);
        student.say()
    </script>
</body>
</html>